# # for
#
# for i in range(10):
#     print(i)
#
# # i = 0;
# # while True:
# #     print(i)
# #     i += 1
# #     if i == 20:
# #         break
# while i < 20:
#     print(i)
#     i += 1
#
# # None是false
# print(bool(0))
# print(bool(""))
# print(bool([]))
# print(bool({}))
# print(bool(set()))
# print(bool(tuple))
# print(bool(None))
#
#

# # 字符串：索引和切片比较自由
# s = "abcdefghigk"
# print(s[1])
# print(s[-1])  # 负数代表倒数
# print(s[2:4])  # 2~3, 不包括4
# s2 = s[1:]  # 不要第一个字
#
# # 切片:
# # 1、split() 切割，默认是根据空白切割，包括\n\r\t空格等
# s3 = "aaa bbb  ccc. ddd"
# lst = s3.split()
# print(lst)  # 输出:['aaa', 'bbb', 'ccc.', 'ddd']
# # 还可以根据需要的东西进行切割，输入的东西会被切掉，然后根据切掉的地方分层
#
# data = "10,英雄本色,1500w"
# rank, name, money = data.split(",")  # lst
# print(rank)  # lst[0]
# print(name)  # lst[1]
# print(money)  # lst[2]
#
# # 2、strip()，默认是去掉左右两端的空白
# s = "  \r\r\r   abc \n\n\n\t"
# s = s.strip()
# print(s)
#
# # 3、replace(old, new) 替换
# s = "abc cba"
# s = s.replace(" ", ",") # abc,cba
# print(s)
#
# # 4、"".join(list) 把列表中的内容拼接成一个新的字符串
# lst = ["ab", "cd", "ef"]
# s = "".join(lst)
# print(s) # abcdef
# # 也可以选择用啥去拼接，例如：
# s = ",".join(lst)
# print(s) # ab,cd,ef
#
# # 5、f-string: 格式化输出
# name = "abc"
# age = 18
# s = f"my name is {name}, my age is {age}" # 如果想输入大括号进去的话就转义：{{}}
# print(s)

# # 列表： 爬虫中使用次数最多的列表的操作
# lst = []
# lst.append("a")
# lst.append("b")
# lst.append("c")
# print(lst)  # ['a', 'b', 'c']
#
# lst1 = [1, 2, 3]
# lst2 = [4, 5, 6]
# lst1.extend(lst2)  # 列表合并
# print(lst1)  # [1, 2, 3, 4, 5, 6]
# item = lst1.pop()  # 默认删除列表中的最后一项
# print(lst1)  # [1, 2, 3, 4, 5]
# print(item)  # 6
#
# for i in range(len(lst)):
#     print(i) # 拿到索引
#     print(lst[i]) # 拿到数据


# 字典：可以成对的保存数据，使用率最高的数据类型：string, list, dict
dic = {"jay": "周杰伦", "jj": "林俊杰"}  # 以key: value 的形式存储
# 想要从字典中拿到value，必须要有key
# 一定要通过key来拿value
name = dic["jay"]  # 等价于dic.get("jay"),但是第一种方式，如果key不存在，会报错，但第二种如果key不存在则不会报错,返回None
# 可以dic.get("jay", "默认值") 这样返回的就是默认值了
print(name)

# 删除还是一样dic.pop("jay")，默认删除最后一个，但是不常用
# 修改的话，就是dic["jay"] = "xxx"
# 新增的话就是 dic["xxx"] = "xxx"
# 给的key存在的话就是修改，不存在就是新增
# 嵌套，比较复杂，但其实也就是一层套一层

person = {  # 可以描述世间所有的数据
    "name": "汪峰",
    "age": 56,
    "pre_wife": {
        "name": "章子怡",
        "age": 43,
        "hobby": ["演戏", "当导师", "笑"],
        "作品": ['卧虎藏龙', '角色扮演']
    },
    "作品": ['春天里', "上头条", "北京北京"],
    "children": [
        {"name": "孩子1", "age": 13, "hobby": ["捉迷藏", "冰激凌"]},
        {"name": "孩子2", "age": 11, "hobby": ["冰激凌", "游乐场"]},
        {"name": "孩子3", "age": 8, "hobby": ["捉迷藏", "斗地主"]},
    ],
}
# 获取数据
# 1.汪峰的年龄
print(person['age'])
# 2.汪峰的老婆的年龄
print(person['pre_wife']['age']) # 取数据时就中括号中括号的往里面套
# 3.罗列出汪峰老婆的爱好
print(person['pre_wife']['hobby']) # 列表形式展现
for i in person['pre_wife']['hobby']: # 使用循环即可获取
    print(i)

# 看到汪峰每一个孩子的年龄
for i in person['children']: # 使用循环即可获取
    print(f"name: {i['name']}, age: {i['age']}")

# 看到每一个孩子所有的爱好
for i in person['children']:
    child_name = i['name']
    chile_hobby = i['hobby']
    result = f'{child_name}喜欢{",".join(chile_hobby)}'
    print(result)